JDK: 1.8
SpringBoot: 1.5.10.RELEASE
添加 Web 和 thymeleaf 起步依赖
1 | <dependency> |
创建 home.html
1 |
|
创建 hello.html
1 |
|
配置 MvcConfig 配置类
1 | import org.springframework.context.annotation.Configuration; |
Override
addViewControllers()
方法,添加四个视图控制器。
两个视图控制器,引用 home 的视图
一个视图控制器,引用 hello 的视图
一个视图控制器,引用 login 的视图(后续添加)
创建应用启动类
1 |
|
添加 security 依赖
1 | <dependency> |
添加 WebSecurityConfig 配置类
1 | import org.springframework.context.annotation.Configuration; |
WebSecurityConfig
类使用了 @EnableWebSecurity
注解,以启用 Spring Security 的 Web 安全支持,并提供 Spring MVC 集成。继承了 WebSecurityConfigurerAdapter
并覆写了一些方法来设置 Web 安全配置的一些细节。
config(HttpSecurity)
方法定义了哪些 URL 路径应该被保护,哪些不应该被保护。
此处设置 / 和 home 不需要任何身份验证,其他任何 URL 均需要身份验证。
当用户成功登录时,它们将被重定向到先前请求的需要身份验证的页面。有一个由 loginPage()
指定的自定义 /login 页面,每个人都可以查看它。
configureGlobal(AuthenticationManagerBuilder)
方法将用户信息和用户的角色信息设置在内存中。
添加 login.html
1 |
|
Thymeleaf 模板只是提供一个表单来获取用户名和密码,并将它们提交到 “/login”。
根据配置, Spring Security 提供了一个拦截该请求并验证用户的过滤器。如果用户未通过认证,该页面将重定向到 “/login?error” , 并在页面显示响应的错误消息。注销成功后,将送到 “/login?logout” ,并在页面显示相应的登出成功消息。
更新 hello.html
1 |
|
使用 Spring Security 与 HttpServletRequest#getRemoteUser() 集成显示用户名。
“登出” 表单将 POST 请求提交到 “/logout”。成功注销后,会将用户重定向到 ”/login?logout”。
测试
访问:http://localhost:8080
应用将进入 login 页面,根据提示输入账号:user,密码:password。
代码已上传 GitHub https://github.com/lxmuse/lxmuse-spring-boot 下 example-spring-boot/example-security-01